package com.huas.service.serviceimpl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.huas.common.PageResult;
import com.huas.entity.Role;
import com.huas.mapper.RoleMapper;
import com.huas.service.RoleService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Service
public class RoleServiceImpl implements RoleService {
    @Resource
    private RoleMapper roleMapper;
    /**
     * 角色分页列表查询
     */
    @Override
    public PageResult page(Integer page, Integer pageSize) {
        //PageHelper设置分页参数
        PageHelper.startPage(page,pageSize);
        /**
         * 底层实现原理：ThreadLocal
         * startPage:将page,pageSize都存入本地空间，调用mapper的方法又取出进行动态拼接
         */
        Page<Role> p = roleMapper.page();

        return new PageResult(p.getTotal(),p.getResult());
    }
    /**
     * 添加角色
     */
    @Override
    @Transactional
    public void insert(Role role) {
        //添加角色默认状态正常
        role.setStatus((short) 1);
        roleMapper.reset();
        roleMapper.insert(role);

    }
    /**
     * 修改角色
     */
    @Override
    public void update(Role role) {
        roleMapper.update(role);
    }
    /**
     * 删除角色
     */
    @Override
    public void delete(Integer id) {
        roleMapper.delete(id);
    }

    /**
     * 根据角色id查询对应权限集合
     * @param roleId
     * @return
     */
    @Override
    public List<Integer> selectRoleMenu(Integer roleId) {
        List<Integer> menus = roleMapper.selectRoleMenu(roleId);
        return menus;
    }
}
